Skip to content

setIntervalsetTimeout 都是 JavaScript 中用于执行定时任务的函数,但它们的行为有所不同。setInterval 会按照指定的间隔不断重复执行某个函数,而 setTimeout 则只会在指定的时间后执行一次函数。

javascript
function mySetInterval(callback, delay) {  
    // 初始调用  
    callback();  
  
    // 递归调用 setTimeout 来模拟 setInterval  
    const intervalId = setTimeout(() => {  
        // 清除前一个 setTimeout,防止在回调函数执行时间较长时产生累积的延迟  
        clearTimeout(intervalId);  
  
        // 递归调用 mySetInterval  
        mySetInterval(callback, delay);  
  
        // 执行回调函数  
        callback();  
    }, delay);  
}  
  
// 使用示例  
mySetInterval(() => console.log('Hello, world!'), 1000);

这个 mySetInterval 函数首先执行一次回调函数,然后设置一个 setTimeout 在指定的延迟后执行。在 setTimeout 的回调函数中,我们首先清除前一个 setTimeout(如果有的话),然后递归调用 mySetInterval 来设置下一个 setTimeout,最后执行回调函数。这样就实现了类似 setInterval 的功能。